package com.example.ai.assistant;

import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.spring.AiService;
import dev.langchain4j.service.spring.AiServiceWiringMode;
import reactor.core.publisher.Flux;


/**
 * 无爱咖啡智能客服代理接口
 * 定义智能客服与用户的对话交互能力，集成流式对话、记忆管理和工具调用功能
 *
 * @author czwa
 */
@AiService(
        wiringMode = AiServiceWiringMode.EXPLICIT,         // 显式 wiring 模式（手动配置组件连接）
        streamingChatModel = "qwenStreamingChatModel",      // 流式对话模型 Bean 名称
        chatMemoryProvider = "chatMemoryProviderWuAi",      // 对话记忆提供者 Bean 名称
        tools = "WuAiTools",                               // 工具集 Bean 名称
        contentRetriever = "contentRetrieverWuAi"          // 内容检索器 Bean 名称
)
public interface WuAiAgent {

     /**
      * 流式对话接口
      *
      * @param memoryId 对话记忆ID（用于关联历史对话上下文）
      * @param message 用户输入消息
      * @return 流式返回的AI响应内容（按token逐个返回）
      */
     Flux<String> chat(@MemoryId Long memoryId, @UserMessage String message);
}